package com.scott.crm.teacher.service;
import com.scott.crm.clazz.bean.ClazzBean;
import com.scott.crm.clazz.bean.ClazzStudentTeacherBean;
import com.scott.crm.delay.bean.DelayBean;
import com.scott.crm.role.bean.RoleBean;
import com.scott.crm.role.bean.UserRoleBean;
import com.scott.crm.teacher.bean.TeacherBean;
import com.scott.crm.teacher.dto.MyDto;
import com.scott.crm.user.bean.UserBean;
import java.util.List;

/**
 * @author 袁海华
 * @date 2021/11/23 9:31
 */
public interface TeacherService {
    Integer updateClazz(MyDto myDto);

    int deleteAssignClazz(List<Integer> ids);

    Integer updateTeacherByUserId(TeacherBean  teacherBean);
    /**
     * 方法描述:查询表的用户未绑定角色的列表
     * @author: 王伟雄
     * @date: 2021/11/29 15:32 [] java.util.List<com.scott.crm.role.bean.UserRoleBean>
     */
    List<UserRoleBean> findAll(Integer begin, Integer end);
    /**
     * 方法描述:管理员增加一个老师
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [teacherId]
     * @return:[]
     */
    int add(TeacherBean teacherBean);

    /**
     * 方法描述:管理员根据老师ID删除一个一个
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [teacherId]
     * @return:[]
     */
    int deleteById(List<Integer> ids);

    /**
     * 方法描述:管理员根据老师ID更新老师资料
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [teacherId]
     * @return:[]
     */
    int update(TeacherBean teacherBean);

    /**
     * 方法描述:管理员根据老师ID查找老师
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [teacherId]
     * @return:[TeacherBean]
     */
    TeacherBean findById(Integer teacherId);

    /**
     * 方法描述:根据老师ID查看该老师迟到学生的学号名单
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [teacherId]
     * @return:List<DelayBean>
     */
    List<DelayBean> findLateStudentInforByTeacherId(Integer teacherId);

    /**
     * 方法描述:根据老师ID查找该老师的全部学生
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [teacherId]
     * @return:List<DelayBean>
     */
    List<Integer> findStudentIdByTeacherId(Integer teacherId);

    /**
     * 方法描述:老师本人根据自己的ID更新自己信息
     * @author: 袁海华
     * @date: 2021/11/23 15:05
     * @param: [userBean]
     * @return:[]
     */
    int updateTeacherInforByTeacherId(UserBean userBean);

    /**
     * 方法描述:管理员根据角色Id查看全部老师
     * @author: 袁海华
     * @date: 2021/11/24 13:55
     * @param: [roleId]
     * @return:[List<Integer>]
     */
    List<Integer> findAllTeacherIdByRoleId(Integer roleId);

    /**
     * 方法描述:管理员查看未分配班级的老师
     * @author: 袁海华
     * @date: 2021/11/29 10:22
     * @param: [roleBean]
     * @return:List<UserBean>
     */
//    List<UserBean> findStudentOrTeacherByNotClass(RoleBean roleBean);

    /**
     * 方法描述:管理员根据老师ID给老师分配班级
     * @author: 袁海华
     * @date: 2021/11/29 10:25
     * @param: [clazzStudentTeacherBean]
     * @return: []
     */
    int addClazzByTeacherId(ClazzStudentTeacherBean clazzStudentTeacherBean);

    /**
     * 方法描述:管理员根据角色类型查看老师资料
     * @author: 袁海华
     * @date: 2021/11/29 10:26
     * @param: [type]
     * @return: List<MyDto>
     */
    List<MyDto>findTeacherInforByClazzType();

//    ArrayList<QuestionEntity> findQuestionsByTeacherId(Integer teacherId);


    List<TeacherBean> findAllTeacher();

    List<TeacherBean> findAllTeacherPage(Integer begin,Integer end);


}
